์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธ ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํ ๊ณ ๊ธ CSS ๊ธฐ์ ์ ์ดํด๋ณด์ธ์. ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ์ ๊ฐ์ ํ๊ณ , ๋ ์ด์์ ์ค๋์ฑ์ ์ค์ด๋ฉฐ, ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
CSS ํ ์คํธ ๋ฐ์ค ์ฃ์ง ์ฑ๋ฅ: ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ ์ต์ ํ
์น ๊ฐ๋ฐ ๋ถ์ผ์์ ๋งค๋๋ฝ๊ณ ๋ฐ์์ด ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ์ค ์ค์ํ ์ธก๋ฉด์ ํนํ ํ ์คํธ ๋ฐ์ค ๋ด์์ ํ ์คํธ๋ฅผ ํจ์จ์ ์ผ๋ก ๋ ๋๋งํ๋ ๊ฒ์ ๋๋ค. ์ ๋๋ก ์ต์ ํ๋์ง ์์ ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ์ ์ฌ๊ฐํ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์ด๋ํ์ฌ ์ธํฐํ์ด์ค๊ฐ ๋๋ ค์ง๊ณ ์ฌ์ฉ์๋ฅผ ์ข์ ์ํฌ ์ ์์ต๋๋ค. ์ด ์ข ํฉ ๊ฐ์ด๋๋ CSS ํ ์คํธ ๋ฐ์ค ์ฃ์ง ์ฑ๋ฅ์ ๋ณต์ก์ฑ์ ๊น์ด ํ๊ณ ๋ค์ด, ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ์ ์ต์ ํํ๊ธฐ ์ํ ์คํ ๊ฐ๋ฅํ ์ ๋ต๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ณผ์ ์ดํดํ๊ธฐ
ํ
์คํธ๋ฅผ ์ ํํ๊ณ ํจ์จ์ ์ผ๋ก ๋ ๋๋งํ๋ ๊ฒ์ ํฐํธ ๋ก๋ฉ, ๋ฌธ์ ์ธ์ฝ๋ฉ, ์ค ๋ฐ๊ฟ, ๋ ์ด์์ ๊ณ์ฐ ๋ฑ ์ฌ๋ฌ ์์๊ฐ ๋ณต์กํ๊ฒ ์ํธ ์์ฉํ๋ ๊ณผ์ ์
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ font-family, font-size, line-height, letter-spacing, word-spacing๊ณผ ๊ฐ์ ๋ค์ํ CSS ์์ฑ์ ๊ณ ๋ คํ์ฌ ๊ฐ ๋ฌธ์, ๋จ์ด, ์ค์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๊ณ์ฐ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ํนํ ์ด๋ ค์์ง ์ ์์ต๋๋ค:
- ๋ณต์กํ ์คํฌ๋ฆฝํธ: ์๋์ด, ์ค๊ตญ์ด, ์ผ๋ณธ์ด, ํ๊ตญ์ด์ ๊ฐ์ด ๋ณต์กํ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๋ ์ธ์ด๋ ํฉ์, ๋ฌธ๋งฅ์ ๋ฐ๋ฅธ ํํ, ์ธ๋ก ์ฐ๊ธฐ ๋ชจ๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํน์ํ ๋ ๋๋ง ์๊ณ ๋ฆฌ์ฆ์ด ํ์ํฉ๋๋ค.
- ๊ฐ๋ณ ๊ธ๊ผด: ๊ฐ๋ณ ๊ธ๊ผด์ ๋ค์ํ ์คํ์ผ ๋ณํ์ ์ ๊ณตํ์ง๋ง, ๋ ๋๋ง ์ค์ ์ถ๊ฐ์ ์ธ ๊ณ์ฐ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํต๋๋ค.
- ๋์ ์ฝํ ์ธ : ์ฑํ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์ค์๊ฐ ๋์๋ณด๋์ ๊ฐ์ด ๋์ ์ผ๋ก ํ ์คํธ ์ฝํ ์ธ ๋ฅผ ์ ๋ฐ์ดํธํ๋ฉด ๋น๋ฒํ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ ๋ฐํ์ฌ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ๊ตญ์ ํ(i18n): ์๋ก ๋ค๋ฅธ ํฐํธ ์๊ตฌ ์ฌํญ๊ณผ ํ ์คํธ ๋ฐฉํฅ์ ๊ฐ์ง ์ฌ๋ฌ ์ธ์ด๋ฅผ ์ง์ํ๋ ๊ฒ์ ๋ ๋๋ง ๊ณผ์ ์ ๋ณต์ก์ฑ์ ๋ํฉ๋๋ค.
๋์ฑ์ด, ๋นํจ์จ์ ์ธ CSS ๊ดํ์ ์ด๋ฌํ ๊ณผ์ ๋ฅผ ์ ํ์์ผ ๋ ์ด์์ ์ค๋์ฑ๊ณผ ํ์ธํธ ์คํฐ์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๋ ์ด์์ ์ค๋์ฑ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ๋ธ๋ผ์ฐ์ ์๊ฒ ์งง์ ์๊ฐ ์์ ์ฌ๋ฌ ๋ฒ ๋ ์ด์์์ ์ฌ๊ณ์ฐํ๋๋ก ๊ฐ์ ํ ๋ ๋ฐ์ํ๋ฉฐ, ํ์ธํธ ์คํฐ์ ํ๋ฉด์ ๊ณผ๋ํ๊ฒ ๋ค์ ๊ทธ๋ฆฌ๋ ๊ฒ์ ํฌํจํฉ๋๋ค.
ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ ์ต์ ํ ์ ๋ต
๋คํํ๋, ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ์ ์ต์ ํํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๊ธฐ์ ์ด ์์ต๋๋ค.
1. ํฐํธ ๋ก๋ฉ ์ต์ ํ
ํฐํธ ๋ก๋ฉ์ ํ
์คํธ ๋ ๋๋ง์์ ์ฒ์ ๋ง์ฃผ์น๋ ๋ณ๋ชฉ ํ์์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ์ง๊ณ ์์ง ์์ ํฐํธ๋ฅผ ์ฐธ์กฐํ๋ font-family ์ ์ธ์ ๋ง๋๋ฉด, ์๋ฒ์์ ํฐํธ ํ์ผ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํ
์คํธ ๋ ๋๋ง์ ์ฐจ๋จํ์ฌ ๋ณด์ด์ง ์๋ ํ
์คํธ์ ๊น๋นก์(FOIT)์ด๋ ์คํ์ผ์ด ์ ์ฉ๋์ง ์์ ํ
์คํธ์ ๊น๋นก์(FOUT)์ ์ด๋ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด ๋ค์ ์ ๋ต์ ๊ณ ๋ คํด ๋ณด์ธ์:
font-display์ฌ์ฉ:font-displayCSS ์์ฑ์ ์ฌ์ฉํ๋ฉด ํฐํธ ๋ก๋ฉ ๋์์ ์ ์ดํ ์ ์์ต๋๋ค.swap์ด๋optional๊ณผ ๊ฐ์ ๊ฐ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉ์ ์ ์ ํฐํธ๋ฅผ ๋ก๋ฉํ๋ ๋์ ๋์ฒด ํฐํธ๋ฅผ ํ์ํ๋๋ก ํ์ฉํ์ฌ FOIT์ FOUT์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์:css @font-face { font-family: 'MyCustomFont'; src: url('my-custom-font.woff2') format('woff2'); font-display: swap; }- ํฐํธ ๋ฏธ๋ฆฌ ๋ก๋:
<link rel="preload">ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ ์ด๊ธฐ์ ํฐํธ๋ฅผ ๋ค์ด๋ก๋ํ๋๋ก ์ง์ํ์ฌ ํฐํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๊ธฐ๊น์ง์ ์ง์ฐ์ ์ค์ผ ์ ์์ต๋๋ค. ์:html <link rel="preload" href="my-custom-font.woff2" as="font" type="font/woff2" crossorigin> - ์น ํฐํธ ์ต์ ํ ์๋น์ค ์ฌ์ฉ: Google Fonts๋ Adobe Fonts์ ๊ฐ์ ์๋น์ค๋ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ์ฅ์น์ ๋ง๊ฒ ํฐํธ ํ์ผ์ ์๋์ผ๋ก ์ต์ ํํ์ฌ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ณ ๋ก๋ฉ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ์ ์ ํ ํฐํธ ํ์ ์ ํ: ์ต์ ๋ธ๋ผ์ฐ์ ๋ WOFF2์ ๊ฐ์ ํ์์ ์ง์ํ๋ฉฐ, ์ด๋ TTF๋ EOT์ ๊ฐ์ ์ด์ ํ์์ ๋นํด ์ฐ์ํ ์์ถ๋ฅ ์ ์ ๊ณตํฉ๋๋ค.
2. ๋ ์ด์์ ์ค๋์ฑ ์ต์ํ
๋ ์ด์์ ์ค๋์ฑ์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ๋ฐ๋ณต์ ์ผ๋ก DOM์ ์ฝ๊ณ ์ธ ๋ ๋ฐ์ํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ๋ฌ ๋ฒ ๋ ์ด์์์ ์ฌ๊ณ์ฐํ๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํผํ๋ ค๋ฉด DOM ์ํธ ์์ฉ ํ์๋ฅผ ์ต์ํํ๊ณ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์์ ์ ์ผ๊ด ์ฒ๋ฆฌํ์ธ์.
๋ค์์ ๋ช ๊ฐ์ง ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ ์ ๋๋ค:
- ๋ฌธ์ ์กฐ๊ฐ(document fragments) ์ฌ์ฉ: DOM์ ์ฌ๋ฌ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ ๋, ๋ฉ๋ชจ๋ฆฌ์ ๋ฌธ์ ์กฐ๊ฐ์ ์์ฑํ๊ณ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์กฐ๊ฐ์ ์ถ๊ฐํ ๋ค์, ํ ๋ฒ์ ์์ ์ผ๋ก ์กฐ๊ฐ์ DOM์ ์ถ๊ฐํ์ธ์.
- ๊ณ์ฐ๋ ๊ฐ ์บ์ฑ: ๋์ผํ DOM ์์ฑ์ ์ฌ๋ฌ ๋ฒ ์ ๊ทผํด์ผ ํ๋ ๊ฒฝ์ฐ, ์ค๋ณต ๊ณ์ฐ์ ํผํ๊ธฐ ์ํด ํด๋น ๊ฐ์ ๋ณ์์ ์บ์ฑํ์ธ์.
- ๊ฐ์ ๋๊ธฐ์ ๋ ์ด์์ ํผํ๊ธฐ: DOM์ ์ฝ๊ณ ์ฐ๋ ์์์ ์ ์ํ์ธ์. DOM์ ์ด ์งํ์ DOM ์์ฑ์ ์ฝ์ผ๋ฉด ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์๋ ๋๊ธฐ์ ๋ ์ด์์์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- ์ด๋ฒคํธ ํธ๋ค๋ฌ ๋๋ฐ์ด์ฑ ๋ฐ ์ค๋กํ๋ง:
scroll์ด๋resize์ ๊ฐ์ด ์์ฃผ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ๊ฒฝ์ฐ, ๋๋ฐ์ด์ฑ์ด๋ ์ค๋กํ๋ง์ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์คํ๋๋ ํ์๋ฅผ ์ ํํ์ธ์.
๋ฌธ์ ์กฐ๊ฐ ์ฌ์ฉ ์์ (JavaScript):
javascript
const data = ['Item 1', 'Item 2', 'Item 3'];
const list = document.getElementById('myList');
const fragment = document.createDocumentFragment();
data.forEach(item => {
const li = document.createElement('li');
li.textContent = item;
fragment.appendChild(li);
});
list.appendChild(fragment);
3. CSS ์ ํ์ ์ต์ ํ
CSS ์ ํ์์ ํจ์จ์ฑ ๋ํ ๋ ๋๋ง ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๋ณต์กํ๊ณ ๊น๊ฒ ์ค์ฒฉ๋ ์ ํ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์์๋ฅผ ์ผ์น์ํค๋ ๋ฐ ๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ, ํนํ ํฐ ํ์ด์ง์์๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๋ฐ๋ผ์ ๋ถํ์ํ ๋ณต์ก์ฑ ์์ด ํน์ ์์๋ฅผ ๋์์ผ๋ก ํ๋ ํจ์จ์ ์ธ CSS ์ ํ์๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๋ค์์ ๋ช ๊ฐ์ง ์ง์นจ์ ๋๋ค:
- ํด๋์ค ์ด๋ฆ๊ณผ ID ์ฌ์ฉ: ํด๋์ค ์ด๋ฆ๊ณผ ID๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์์๋ฅผ ์ ์ํ๊ฒ ์๋ณํ ์ ์๊ฒ ํด์ฃผ๋ฏ๋ก ๊ฐ์ฅ ํจ์จ์ ์ธ ์ ํ์์ ๋๋ค.
- ์์ ์ ํ์ ํผํ๊ธฐ: ์์ ์ ํ์(์:
.container p)๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ ์ฒด DOM ํธ๋ฆฌ๋ฅผ ์ํํด์ผ ํ๋ฏ๋ก ๋๋ฆด ์ ์์ต๋๋ค. - ์ ํ์๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ง: ๋ง์ ์์ ์์์ ์ผ์นํ ์ ์๋ ์ง๋์น๊ฒ ์ผ๋ฐ์ ์ธ ์ ํ์๋ ํผํ์ธ์.
- BEM ๋ฐฉ๋ฒ๋ก ์ฌ์ฉ: ๋ธ๋ก ์์ ์์ ์(BEM) ๋ฐฉ๋ฒ๋ก ์ ํํํ๊ณ ๊ตฌ์ฒด์ ์ธ ํด๋์ค ์ด๋ฆ ์ฌ์ฉ์ ์ฅ๋ คํ์ฌ ํจ์จ์ ์ธ CSS ์ ํ์๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์๋๋ก ํฉ๋๋ค.
4. CSS Containment ํ์ฉ
CSS containment๋ ์น ํ์ด์ง์ ์ผ๋ถ๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ํ์ด์ง์ ํ ๋ถ๋ถ์์ ๋ ์ด์์ ๋ณ๊ฒฝ์ด ๋ค๋ฅธ ๋ถ๋ถ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ์ ์ ๋๋ค. ์ด๋ ํนํ ๋ณต์กํ ๋ ์ด์์์์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
contain CSS ์์ฑ์ layout, paint, content๋ฅผ ํฌํจํ ์ฌ๋ฌ ๊ฐ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ ๊ฐ์ ์ ์ฉํ ๊ฒฉ๋ฆฌ ์ ํ์ ์ง์ ํฉ๋๋ค.
contain: layout: ์์์ ๋ ์ด์์์ด ํ์ด์ง์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ๋ ๋ฆฝ์ ์์ ๋ํ๋ ๋๋ค. ์์์ ๋ ์ด์์ ๋ณ๊ฒฝ์ ๋ค๋ฅธ ์์์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.contain: paint: ์์์ ํ์ธํ ์ด ํ์ด์ง์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ๋ ๋ฆฝ์ ์์ ๋ํ๋ ๋๋ค. ์์์ ํ์ธํ ๋ณ๊ฒฝ์ ๋ค๋ฅธ ์์์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.contain: content:layout๊ณผpaint๊ฒฉ๋ฆฌ๋ฅผ ๊ฒฐํฉํ์ฌ ๊ฐ์ฅ ํฌ๊ด์ ์ธ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
CSS Containment ์ฌ์ฉ ์์:
css
.card {
contain: content;
}
5. `will-change` ์์ฑ ํ์ฉ (์ฃผ์ํด์ ์ฌ์ฉ)
will-change CSS ์์ฑ์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ์์์ ์์ฑ์ด ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์์์ ๋ฏธ๋ฆฌ ์๋ฆด ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณ๊ฒฝ์ ์์ํ์ฌ ์์์ ๋ ๋๋ง์ ์ต์ ํํ ๊ธฐํ๋ฅผ ์ค ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ will-change๋ ๋ถ์ ์ ํ๊ฒ ์ฌ์ฉ๋ ๊ฒฝ์ฐ ์๋นํ ๋ฉ๋ชจ๋ฆฌ์ ๋ฆฌ์์ค๋ฅผ ์๋นํ ์ ์์ผ๋ฏ๋ก ์๊ปด์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ํ๋ฐํ๊ฒ ์ ๋๋ฉ์ด์
๋๊ฑฐ๋ ๋ณํ๋๋ ์์์๋ง ์ฌ์ฉํ์ธ์.
`will-change` ์ฌ์ฉ ์์:
css
.element-to-animate {
will-change: transform, opacity;
}
6. ์ฑ๋ฅ ์ธก์ ๋ฐ ํ๋กํ์ผ๋ง
์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ค๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋๋ง ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ํ๋กํ์ผ๋งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ ์ด๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- ์ฑ๋ฅ ํจ๋: Chrome DevTools ๋ฐ Firefox ๊ฐ๋ฐ์ ๋๊ตฌ์ ์ฑ๋ฅ ํจ๋์ ์ฌ์ฉํ๋ฉด ํ์ด์ง์ ๋ ๋๋ง ์ฑ๋ฅ์ ๊ธฐ๋กํ๊ณ ๋ถ์ํ ์ ์์ต๋๋ค. ์ค๋ ์คํ๋๋ ์์ , ๋ ์ด์์ ์ค๋์ฑ ๋ฐ ํ์ธํธ ์คํฐ์ ์๋ณํ ์ ์์ต๋๋ค.
- ๋ ๋๋ง ์ค์ : Chrome DevTools์ ๋ ๋๋ง ์ค์ ์ ์ฌ์ฉํ๋ฉด ๋๋ฆฐ CPU ๋ฐ ๋คํธ์ํฌ ์ฐ๊ฒฐ๊ณผ ๊ฐ์ ๋ค์ํ ๋ ๋๋ง ์๋๋ฆฌ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ฌ ๋ค์ํ ์กฐ๊ฑด์์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ ์ ์์ต๋๋ค.
- Lighthouse: Lighthouse๋ ์น ํ์ด์ง์ ์ฑ๋ฅ, ์ ๊ทผ์ฑ ๋ฐ SEO๋ฅผ ๊ฐ์ฌํ๋ ์๋ํ๋ ๋๊ตฌ์ ๋๋ค. ํ์ดํฌ๊ทธ๋ํผ ์ต์ ํ๋ฅผ ํฌํจํ์ฌ ์ฑ๋ฅ ํฅ์์ ์ํ ๊ถ์ฅ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค.
์ฑ๋ฅ ์งํ๋ฅผ ์ ์คํ๊ฒ ๋ถ์ํ๊ณ ๋ณ๋ชฉ ํ์์ ๊ทผ๋ณธ ์์ธ์ ์๋ณํจ์ผ๋ก์จ ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ์ ํจ๊ณผ์ ์ผ๋ก ์ต์ ํํ๊ณ ์ ๋ฐ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
7. ๊ตญ์ ํ ๊ณ ๋ ค ์ฌํญ
์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋๋ ๊ตญ์ ํ(i18n)๊ฐ ํ์ดํฌ๊ทธ๋ํผ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ธ์ด์ ์คํฌ๋ฆฝํธ๋ง๋ค ํฐํธ ์๊ตฌ ์ฌํญ๊ณผ ํ ์คํธ ๋ ๋๋ง ํน์ฑ์ด ๋ค๋ฆ ๋๋ค.
๋ค์์ ๋ช ๊ฐ์ง ์ฃผ์ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค:
- ์ ๋์ฝ๋ ์ฌ์ฉ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ด๋ฒ์ํ ๋ฌธ์ ๋ฐ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ๋๋ก ์ ๋์ฝ๋(UTF-8) ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋์ง ํ์ธํ์ธ์.
- ์ ์ ํ ํฐํธ ์ ํ: ํ์ํด์ผ ํ๋ ์ธ์ด์ ์คํฌ๋ฆฝํธ๋ฅผ ์ง์ํ๋ ํฐํธ๋ฅผ ์ ํํ์ธ์. ๋์ ์ธ์ด์ ๋ํ ์ ์ฉ ๋ฒ์๊ฐ ์ข์ ์์คํ ํฐํธ๋ ์น ํฐํธ ์ฌ์ฉ์ ๊ณ ๋ คํ์ธ์.
- ํ
์คํธ ๋ฐฉํฅ ์ฒ๋ฆฌ: ์๋์ด์ ํ๋ธ๋ฆฌ์ด ๊ฐ์ ์ผ๋ถ ์ธ์ด๋ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์๋๋ค(RTL). ์ด๋ฌํ ์ธ์ด์ ํ
์คํธ ๋ฐฉํฅ์ ์ง์ ํ๋ ค๋ฉด
directionCSS ์์ฑ์ ์ฌ์ฉํ์ธ์. - ์ค ๋ฐ๊ฟ ๊ท์น ๊ณ ๋ ค: ์ธ์ด๋ง๋ค ์ค ๋ฐ๊ฟ ๊ท์น์ด ๋ค๋ฆ
๋๋ค. ๋จ์ด์ ์ค์ด ์ด๋ป๊ฒ ๋๋๋์ง ์ ์ดํ๋ ค๋ฉด
word-break๋ฐoverflow-wrapCSS ์์ฑ์ ์ฌ์ฉํ์ธ์. - ๋ค๋ฅธ ์ธ์ด๋ก ํ ์คํธ: ํ ์คํธ๊ฐ ์ ํํ๊ณ ํจ์จ์ ์ผ๋ก ๋ ๋๋ง๋๋์ง ํ์ธํ๊ธฐ ์ํด ๋ค์ํ ์ธ์ด์ ์คํฌ๋ฆฝํธ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ ์ ํ ํ ์คํธํ์ธ์.
์๋์ด ํ ์คํธ ๋ฐฉํฅ ์ค์ ์์:
css
.arabic-text {
direction: rtl;
font-family: 'Arial Unicode MS', sans-serif; /* ์ข์ ์ ๋์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๊ฐ์ง ํฐํธ ์์ */
}
8. ๊ฐ๋ณ ๊ธ๊ผด๊ณผ ์ฑ๋ฅ
๊ฐ๋ณ ๊ธ๊ผด์ ํ์ดํฌ๊ทธ๋ํผ์์ ๋ฐ์ด๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ฌ ๋๊ป, ๋๋น, ๊ธฐ์ธ๊ธฐ ๋ฐ ๊ธฐํ ์ถ์ ์กฐ์ ํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ ์ฐ์ฑ์๋ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋น์ฉ์ด ๋ฐ๋ฆ ๋๋ค. ๊ฐ๋ณ ๊ธ๊ผด์ ๋ง์ ๋ณํ์ ์ฌ์ฉํ๋ฉด ๊ณ์ฐ ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํ ์ ์์ต๋๋ค.
- ๊ฐ๋ณ ๊ธ๊ผด ์ ์คํ๊ฒ ์ฌ์ฉ: ์ฌ์ฉ์ ๊ฒฝํ์ ๋ช ํํ ์ด์ ์ ์ ๊ณตํ๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ณ ๊ธ๊ผด ๊ธฐ๋ฅ์ ์ ์ฉํ์ธ์.
- ํฐํธ ์ค์ ์ต์ ํ: ์๊ฐ์ ๋งค๋ ฅ๊ณผ ์ฑ๋ฅ ์ฌ์ด์ ์ต์ ์ ๊ท ํ์ ์ฐพ๊ธฐ ์ํด ๋ค์ํ ํฐํธ ์ค์ ๊ณผ ์ถ์ ์คํํด ๋ณด์ธ์.
- ์ฑ๋ฅ ์ฒ ์ ํ ํ ์คํธ: ๊ฐ๋ณ ๊ธ๊ผด์ ์ฌ์ฉํ ๋, ํนํ ์ ์ฌ์ ์ฅ์น์์ ๋ ๋๋ง ์ฑ๋ฅ์ ์ธ์ฌํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ธ์.
9. ์ ๊ทผ์ฑ ๊ณ ๋ ค ์ฌํญ
ํ์ดํฌ๊ทธ๋ํผ ์ต์ ํ๋ ํญ์ ์ ๊ทผ์ฑ์ ์ผ๋์ ๋๊ณ ์ํ๋์ด์ผ ํฉ๋๋ค. ํ ์คํธ๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ ์ฝ๊ณ ์ ๊ทผํ ์ ์๋๋ก ํ์ธ์.
๋ค์์ ๋ช ๊ฐ์ง ์ฃผ์ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค:
- ์ถฉ๋ถํ ๋๋น ์ฌ์ฉ: ํ ์คํธ ์์์ด ๋ฐฐ๊ฒฝ์๊ณผ ์ถฉ๋ถํ ๋๋น๋ฅผ ์ด๋ฃจ๋๋ก ํ์ธ์. ์น ์ฝํ ์ธ ์ ๊ทผ์ฑ ๊ฐ์ด๋๋ผ์ธ(WCAG)์ ๋ค์ํ ํ ์คํธ ํฌ๊ธฐ์ ๋ํ ์ต์ ๋๋น์จ์ ์ง์ ํฉ๋๋ค.
- ์ ์ ํ ํฐํธ ํฌ๊ธฐ ์ ๊ณต: ์ฝ๊ฒ ์ฝ์ ์ ์์ ๋งํผ ์ถฉ๋ถํ ํฐ ํฐํธ ํฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ธ์. ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ์๊ฐ ํฐํธ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋๋ก ํ์ธ์.
- ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ธ์ด ์ฌ์ฉ: ์ดํดํ๊ธฐ ์ฌ์ด ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ธ์ด๋ก ์์ฑํ์ธ์.
- ์ด๋ฏธ์ง์ ๋ํ ๋์ฒด ํ ์คํธ ์ ๊ณต: ํ ์คํธ๊ฐ ํฌํจ๋ ์ด๋ฏธ์ง์ ๋ํ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ์ธ์.
- ๋ณด์กฐ ๊ธฐ์ ๋ก ํ ์คํธ: ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๋ ์ ๊ทผํ ์ ์๋๋ก ์คํฌ๋ฆฐ ๋ฆฌ๋์ ๊ฐ์ ๋ณด์กฐ ๊ธฐ์ ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ธ์.
์ถฉ๋ถํ ๋๋น ํ๋ณด ์์ (WCAG):
css
.text-with-sufficient-contrast {
color: #000000; /* ๊ฒ์์ */
background-color: #FFFFFF; /* ํฐ์ */
/* ์ด ์กฐํฉ์ ์ผ๋ฐ ํ
์คํธ์ ๋ํ WCAG AA ๋๋น ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํฉ๋๋ค */
}
๊ฒฐ๋ก
CSS ํ ์คํธ ๋ฐ์ค ์ฃ์ง ์ฑ๋ฅ ์ต์ ํ๋ ๋ธ๋ผ์ฐ์ ๋ ๋๋ง, CSS ์์ฑ, ๊ตญ์ ํ ๊ณ ๋ ค ์ฌํญ์ ๋ํ ๊น์ ์ดํด๋ฅผ ์๊ตฌํ๋ ๋ค๊ฐ์ ์ธ ์์ ์ ๋๋ค. ์ด ๊ฐ์ด๋์์ ์ค๋ช ํ ์ ๋ต์ ๊ตฌํํจ์ผ๋ก์จ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์์ผ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ๋ถ๋๋ฝ๊ณ ์ฆ๊ฑฐ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ฑ๋ฅ์ ์ธก์ ํ๊ณ ํ๋กํ์ผ๋งํ๋ฉฐ, ํญ์ ์ ๊ทผ์ฑ์ ์ผ๋์ ๋๊ณ , ๋์์์ด ์งํํ๋ ์น ํ๊ฒฝ์ ์์ ๋๊ฐ๊ธฐ ์ํด ๊ธฐ์ ์ ์ง์์ ์ผ๋ก ๊ฐ์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์. ํฐํธ ๋ก๋ฉ ์ต์ ํ, ๋ ์ด์์ ์ค๋์ฑ ์ต์ํ, CSS ์ ํ์ ์ต์ ํ, CSS containment ํ์ฉ, `will-change`์ ์ ์คํ ์ฌ์ฉ, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ณ ๊ธ๊ผด๊ณผ ๊ตญ์ ํ์ ๋ฏธ๋ฌํ ์ฐจ์ด๋ฅผ ์ดํดํจ์ผ๋ก์จ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํด ์๊ฐ์ ์ผ๋ก ๋งค๋ ฅ์ ์ด๋ฉด์๋ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ๊ธฐ์ ์ด ๋ฐ์ ํ๊ณ ๋ค์ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ํ๊ฒฝ์ด ์งํํจ์ ๋ฐ๋ผ ํจ์จ์ ์ธ ํ์ดํฌ๊ทธ๋ํผ ๊ณ์ฐ์ ํ์์ฑ์ ๊ณ์ํด์ ์ปค์ง ๊ฒ์ด๋ฉฐ, ์ด๋ฌํ ์ต์ ํ๋ ๊ทธ ์ด๋ ๋๋ณด๋ค ๋ ์ค์ํด์ง ๊ฒ์ ๋๋ค.